package com.briup.smartcity_group1.service;

import com.briup.smartcity_group1.bean.basic.Category;
import com.github.pagehelper.PageInfo;
import com.briup.smartcity_group1.exception.ServiceException;
import java.util.List;

/**
 * 资讯栏目相关接口模块
 * @author WangChen
 * @date 2023/1/6 13:57
 */
public interface ICategoryService {

    /**
     * 分页查询资讯信息
     *
     * @param pageNum   页码
     * @param pageSize  页面大小
     * @return 装有当前页资讯栏目信息的列表
     */
    PageInfo<Category> pageQueryAll(int pageNum, int pageSize);

    /**
     * 通过id删除资讯栏目
     * <p>
     * 删除栏目信息需要删除栏目下对应的所有的咨询信息以及咨询信息对应的评论信息
     * 如果栏目作为父栏目使用，需要实现将该栏目对应的所有子栏目全部删除
     * </p>
     *
     * @param id 资讯栏目id
     * @throws ServiceException 要删除的信息不存在
     */
    void deleteById(int id);

    /**
     * 通过id批量删除资讯栏目信息
     *
     * @param ids 资讯栏目id数组
     * @throws ServiceException 待批处理数据中有部分数据不存在;
     *                          待批处理数据全不存在;
     */
    void batchDelete(int[] ids);

    /**
     * 新增资讯栏目信息
     *
     * @param category 要新增的资讯栏目信息
     * @throws ServiceException 序号不能为0或负值
     */
    void saveCategory(Category category);

    /**
     * 更新资讯栏目信息
     *
     * @param category 更新后的资讯栏目信息
     * @throws ServiceException 要更新的信息不存在
     */
    void updateCategory(Category category);

    /**
     * 查询所有栏目信息
     *
     * @return 装有所有栏目信息的列表
     */
    List<Category> findAll();
}
